KernelSU 新的安装方式:LKM
上周末,KernelSU 发布了有史以来最大的更新,引入了一种全新的安装模式:LKM。这几天又修复了一些常见的问题,目前基本稳定了。
LKM 的全称是 Loadable Kernel Module,意即“可加载内核模块”。这是操作系统提供的一种动态拓展内核功能的机制,允许你将一部分功能从内核剥离,在你需要的时候再加载到内核中运行。
这个功能请求于去年九月由内核开发大佬 @alter97 提出,今年一月由 @Ylarod 完成草案并提出了许多关键的实现方法,最近我添砖加瓦最终得以实现。
因此,在 GKI 设备上,KernelSU 目前有两种运行模式;之前使用通用内核的那种方式被称之为 “GKI”,这种新方式我们叫它 “LKM”;如果你升级了新版的管理器就会观察到。LKM 的运行方式给我们带来了诸多可能,我简单给大家描述一下。
“修补”模式
在 LKM 的运行模式下,KernelSU 是作为一个内核模块,在 init 启动阶段加载到内核中的;因此可以做到不修改内核,你可以选择使用官方内核或者其他的第三方内核;某些童鞋可能会觉得 GKI 内核耗电、不如官方稳定,还担心官方魔改,使用这方法可以让自己心里好受一点了。
此外,由于内核模块文件非常小,不到 100K,因此可以直接集成到 ksud
中,能实现离线修补,不用再单独去下载内核,支持 OTA 升级也成了非常自然的事情。
还有,得益于 Rust 方便的跨平台特性,你可以在 Windows,macOS,Linux 和 Android 系统中修补。
以上的这些特性,其实在 GKI 模式下也能实现,无非就是要去在线下载内核;其他的 root 方案也都支持,没什么稀奇。接下来的这两个特性,可以说是独一无二的,虽然可能没什么卵用,但却是一种新的可能。
“越狱”模式
iPhone 获取 root 权限的方式是“越狱”,它并没有“解锁 BL” 这个概念,因为苹果压根就不给你开放这个渠道。而 Android 由于支持解锁,也即允许加载第三方操作系统,获取 root 权限才格外容易。
所谓“越狱”,其实就是通过系统漏洞提权,进而获取 root 权限。Android 系统也是可以这么做的,在 Android 6.0 之前,“一键 Root” 就是这种方式;不过在 Android 引入 Secure Boot 之后,这方法就淡出了主流。
如果我们可以通过某种方法临时获取 root 权限,就可以直接加载 KernelSU 的内核模块进而获取 root;临时 root 有个缺点就是重启就无了,由于工作在内核空间,可以拦截重启过程;只要手机有电,那就可以一直运行。
此外,如果支持得当,模块功能也是可以正常使用的;我有一个手机可以通过 dirtypipe 提权,我已经成功地在没有解锁手机的情况下运行了 KernelSU。
如果有一天,解锁变得越来越不可能,这会是一种有用的方式。当然了,我希望那一天晚点到来。
临时关闭 root
由于 LKM 的方式可以在运行时动态加载,那么同样地,它也可以在运行时动态卸载。我们可能听过说“临时 Root”,那么 LKM 的方式,带来了临时不 Root。
如果有需要,我们可以在你需要的时候,卸载 KernelSU 的 LKM 模块;此时,KernelSU 对内核的修改会荡然无存。这个过程,不需要刷机,甚至连重启手机都不用。如果你想再次使用 root,重启一下手机就回来了。
如果 root 检测真的非常丧心病狂,那你可以直接掀桌:老子不玩了!
还需要 GKI 模式吗?
当然了,GKI 模式也不是一无是处,我认为它在两个方面是无可取代的:
1. 不需要官方固件即可 root;GKI 的方式可以直接提供
boot.img
你刷到手机上就可以获取 root 权限,如果你没有办法获取到官方固件,这个方法会非常有用;此外,它也可以作为 root 方案的 bootstrap,因为不论是 Magisk,Apatch 还是 KernelSU 的 LKM 模式,都需要官方固件,你可以用 GKI 模式临时启动从而获取官方固件。2. 在有内核源码的情况下,可以支持非常多的设备;从 Android 官方模拟器,到 WSA,再到 Waydroid,甚至各种类型的云手机;只有你拥有内核源码,一键集成 KernelSU 即可获取 root 权限,这也是其他方式较难做到的。
最后,大家晚安!
推荐阅读
欢迎关注我的公众号“虚拟框架”,原创技术文章第一时间推送。